package zuul;

import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.shopAuth.feign.AppSessionFeign;

import shopBean.common.bean.RestResult;
import shopBean.common.responseCode.Status;
@Component
public class AuthFilter extends ZuulFilter {
//	@Autowired
//	AppSessionFeign appSessionFeign;
	private static Logger log = LoggerFactory.getLogger(AuthFilter.class);
	@Override
	public String filterType() {
		return "pre";
	}

	@Override
	public int filterOrder() {
		return 0;
	}

	public boolean shouldFilter() {
		// TODO Auto-generated method stub
		return true;
	}

	public Object run() {
		// TODO Auto-generated method stub
//		RequestContext ctx = RequestContext.getCurrentContext();
//		HttpServletRequest request = ctx.getRequest();
//		
//		//后台服务 
//		if(request.getRequestURI().indexOf("/api-shopManager/")>=0) {
//			return null;
//		}
//		//app端调用.do方法的
//		if(request.getRequestURI().indexOf(".do")>=0) {
//			return null;
//		}
//		//.api  
//		if(request.getRequestURI().indexOf(".api")>=0) {
//			ctx.setSendZuulResponse(false);
//			ctx.setResponseStatusCode(401);
//			return null;
//		}
//		//app端登录后都需要传一个token 才能去请求没有结尾接口 比如说是getByUserId
//		String token =request.getParameter("token");
//		if( token== null) {
//			try {
//				ctx.getResponse().getWriter().write("{\"statusCode\":\""+Status.login_error+"\"}");
//			} catch (IOException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//			ctx.setSendZuulResponse(false);
//			return null;
//		}
//		//token 就去调用
//		RestResult result = appSessionFeign.auth(token);
//		if(result==null||result.getData()==null ||result.getData().toString().equals("false") ||!Status.sys_success.equals(result.getStatusCode())) {
//			try {
//				ctx.getResponse().getWriter().write("{\"statusCode\":\""+Status.login_error+"\"}");
//			} catch (IOException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//			ctx.setSendZuulResponse(false);
//			return null;
//		}
//		//增加userid的参数
//		log.warn("url"+request.getRequestURI());
//		log.info(String.format("%s >>> %s", request.getMethod(), request.getRequestURL().toString()));
//		Map<String, List<String>> newParameterMap = new HashMap<>();
//		Map<String, String[]> parameterMap =request.getParameterMap();
//		for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
//		      String key = entry.getKey();
//		      String[] values = entry.getValue();
//		      newParameterMap.put(key, Arrays.asList(values));
//		}
//		newParameterMap.put("userId", Arrays.asList(result.getData1().toString()));
//		ctx.setRequestQueryParams(newParameterMap);;
		return null;
	}
}
